﻿/*
Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.dialog.add('textarea', function (editor) {

    var _caption = '';
    var _idName = '';
    return {
        title: editor.lang.textarea.title,
        minWidth: 350,
        minHeight: 220,
        onShow: function () {
            delete this.textarea;

            var element = this.getParentEditor().getSelection().getSelectedElement();
            if (element && element.getName() == "textarea") {
                this.textarea = element;
                this.setupContent(element);
            }
        },
        onOk: function () {
            var editor,
				element = this.textarea,
				isInsertMode = !element;

            if (isInsertMode) {
                editor = this.getParentEditor();
                element = editor.document.createElement('textarea');
            }
            this.commitContent(element);

            if (isInsertMode)
                editor.insertElement(element);
        },
        contents: [
			{
			    id: 'info',
			    label: editor.lang.textarea.title,
			    title: editor.lang.textarea.title,
			    elements: [
                    {
                        id: 'datafields',
                        type: 'select',
                        style: 'width:100%;',
                        label: editor.lang.textarea.datafields,
                        'default': 'text',
                        accessKey: 'D',
                        items: DIF.MasterData.getMasterFieldData(),
                        onChange: function (obj) {
                            var isExist = $.inArray(this.getValue(), ControlArray);
                            if (isExist < 0) {
                                var dialog = this.getDialog();
                                var selectValue = this.getValue();
                                var Item = jlinq.from(this.items).equals('1', selectValue).select();
                                if (typeof (Item) != "undefined") {
                                    if (typeof (Item[0]) != "undefined") { _caption = Item[0][0]; }
                                }
                                var textfieldName = dialog.getContentElement('info', '_cke_saved_name');
                                textfieldName.setValue(selectValue);
                                textfieldName.getElement().show();
                            } else {
                                if (obj.data.value != _idName) {
                                    alert(editor.lang.select.isexist_datafields);
                                }
                            }
                        },
                        setup: function (element) {
                            _idName = element.getAttribute('id');
                            this.setValue(element.getAttribute('datafields'));
                        },
                        commit: function (element) {
                            if (this.getValue()) {
                                element.setAttribute('datafields', this.getValue());
                                element.setAttribute('title', _caption);
                            }
                            else {
                                element.removeAttribute('datafields');
                                element.removeAttribute('title');
                            }
                        }
                    },
					{
					    id: '_cke_saved_name',
					    type: 'text',
					    label: editor.lang.common.name,
					    'default': '',
					    accessKey: 'N',
					    setup: function (element) {
					        this.setValue(
									element.data('cke-saved-name') ||
									element.getAttribute('name') ||
									'');
					    },
					    commit: function (element) {
					        if (this.getValue()) {
					            element.data('cke-saved-name', this.getValue());
					            element.setAttribute('id', this.getValue());
					        }
					        else {
					            element.data('cke-saved-name', false);
					            element.removeAttribute('name');
					            element.removeAttribute('id');
					        }
					    }
					},
					{
					    type: 'hbox',
					    widths: ['50%', '50%'],
					    children: [
							{
							    id: 'cols',
							    type: 'text',
							    label: editor.lang.textarea.cols,
							    'default': '',
							    accessKey: 'C',
							    style: 'width:50px',
							    validate: CKEDITOR.dialog.validate.integer(editor.lang.common.validateNumberFailed),
							    setup: function (element) {
							        var value = element.hasAttribute('cols') && element.getAttribute('cols');
							        this.setValue(value || '');
							    },
							    commit: function (element) {
							        if (this.getValue())
							            element.setAttribute('cols', this.getValue());
							        else
							            element.removeAttribute('cols');
							    }
							},
							{
							    id: 'rows',
							    type: 'text',
							    label: editor.lang.textarea.rows,
							    'default': '',
							    accessKey: 'R',
							    style: 'width:50px',
							    validate: CKEDITOR.dialog.validate.integer(editor.lang.common.validateNumberFailed),
							    setup: function (element) {
							        var value = element.hasAttribute('rows') && element.getAttribute('rows');
							        this.setValue(value || '');
							    },
							    commit: function (element) {
							        if (this.getValue())
							            element.setAttribute('rows', this.getValue());
							        else
							            element.removeAttribute('rows');
							    }
							}
						]
					},
					{
					    id: 'value',
					    type: 'textarea',
					    label: editor.lang.textfield.value,
					    'default': '',
					    setup: function (element) {
					        this.setValue(element.$.defaultValue);
					    },
					    commit: function (element) {
					        element.$.value = element.$.defaultValue = this.getValue();
					    }
					}

				]
			}
		]
    };
});
